
library ieee;
use ieee.std_logic_1164.all;
use work.mystd.all;

entity KMOP is 
	port (
		opcode	: in bus6;		-- opcode potreban zbog skoka na obradu instrukcije
		kmopOUT	: out bus8		-- adresa skoka u sekvenci koraka
	); 
	
end KMOP;     


architecture KMOP of KMOP is
begin  

	-- u zavisnosti koja je dekodovana instrukcija, skacemo na odredjeni deo u sekvecni koraka
	-- kako bi se izvrsila odredjena instrukcija
	-- ilegalni kod instrukcije skace na deo za obradu prekida

	kmopOUT <= X"05" when opcode = LOADinstr else
			   X"0B" when opcode = STOREinstr else
			   X"10" when opcode = ADDIinstr OR opcode = SUBIinstr  OR 
			   			  opcode = MOVinstr else
			   X"13" when opcode = ADDinstr OR opcode = SUBinstr OR opcode = ANDinstr OR 
			   			  opcode = ORinstr OR opcode = XORinstr else
			   X"16" when opcode = NOTinstr else
			   X"19" when opcode = SHLinstr OR opcode = SHRinstr OR opcode = SARinstr OR
			   			  opcode = ROLinstr OR opcode = RORinstr OR opcode = MOVIinstr else
			   X"1C" when opcode = JMPinstr OR opcode = JSRinstr else
			   X"1F" when opcode = RTSinstr else
			   X"22" when opcode = BEQinstr OR opcode = BNQinstr OR opcode = BLEinstr OR
			   			  opcode = BGEinstr OR opcode = BLTinstr OR opcode = BGTinstr else
			   X"26" when opcode = PUSHinstr else
			   X"28" when opcode = POPinstr else	
			   X"2C" when opcode = HALTinstr else		  		   
			   X"2B"; -- skok na utvrdjivanje greske zbog nelegalne instrukcije

end KMOP;








